<?php

    /**
     * This file is part of the Intelligencer package.
     * For the full copyright and license, please view the LICENSE
     * file that was distributed with this source code.
     * 
     * @author      drapeko <roman.drapeko@gmail.com>
     * @copyright   Roman Drapeko <roman.drapeko@gmail.com>, 2009 - present
     */

    /**
     * An abstract Cache class
     * @author drapeko
     */
    abstract class itCache {
        
        /**
         * Sets the value for the particular key
         * @param mixed $key
         * @param mixed $value
         * @return void
         */
        public abstract function set($key, $value);
        
        /**
         * Returns the value for the particular key
         * @param mixed $key
         * @return mixed
         */
        public abstract function get($key);
        
        /**
         * Removes the particular key from the cache
         * @param mixed $key
         * @return void
         */
        public abstract function del($key);
        
        /**
         * Clears the whole cache
         * @return void
         */
        public abstract function clear();
        
        /**
         * Checks whether the cache is virgin (just created / empty)
         * @return boolean
         */
        public abstract function virgin();
    }
    
?>